package cn.song.docflow.model.dto;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * 通用模板信息数据传输对象
 *
 * @author SongRenShuo
 * @date 2023/05/20
 */
@Data
public class TemplateInformationDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 文档标识符
     */
    @NotBlank(message = "文档标识符不能为空")
    private String documentId;

    /**
     * 文档名称
     */
    @NotBlank(message = "文档名称不能为空")
    private String documentName;

    /**
     * 模板参数映射
     * 用于存储所有需要填充到模板中的参数
     * 键为模板中的占位符名称，值为要填充的内容
     * 如果值是字符串且以"image:"开头，则表示这是一个图片路径
     */
    private Map<String, Object> templateParams = new HashMap<>();

    /**
     * 图片参数映射
     * 用于存储所有需要填充到模板中的图片
     * 键为模板中的占位符名称，值为图片参数对象
     */
    private Map<String, ImageParamDTO> imageParams = new HashMap<>();

    /**
     * 文件类型：1-Word, 2-PDF
     */
    @NotNull(message = "文件类型不能为空")
    private Integer fileType;

    /**
     * 模板文件路径，如果为空则使用默认模板
     */
    private String templatePath;

    /**
     * 模板代码，用于指定使用哪个模板
     */
    private String templateCode;

    /**
     * 是否启用队列模式处理PDF（仅对PDF类型有效）
     * true-使用队列模式（默认）, false-直接处理
     */
    private Boolean queueMode = true;
}
